package com.novel.service;

import com.novel.entiy.dto.LoginDTO;
import com.novel.entiy.dto.RegisterDTO;
import com.novel.entiy.TpUser;
import com.novel.entiy.dto.RewardDTO;
import com.novel.entiy.vo.UserInfo;

/**
 * @author tanghao
 * @date 2022/4/5
 */
public interface UserService {

    /**
     * 获取当前登陆用户信息
     *
     * @return 当前登录用户信息
     */
    TpUser getUserInfo();

    /**
     * 登录
     *
     * @param loginDTO 参数
     * @return 用户信息
     */
    UserInfo login(LoginDTO loginDTO);

    /**
     * 注册
     *
     * @param registerDTO 参数
     */
    void register(RegisterDTO registerDTO);

    /**
     * 获取邮箱验证码
     *
     * @param email 邮箱
     */
    void getEmailCode(String email);

    /**
     * 充值
     *
     * @param amount 数目
     */
    void recharge(Integer amount);

    /**
     * 更新用户缓存
     *
     * @param tpUser 用户信息
     */
    void updateRedisUser(TpUser tpUser);

    /**
     * 退出登录
     */
    void logout();

    /**
     * 申请成为作者
     *
     */
    void applyAuthor();

    /**
     * 编辑用户
     *
     * @param tpUser 用户信息
     */
    void editUser(TpUser tpUser);

    /**
     * 申请签约
     */
    void applySign();

    /**
     * 打赏小说
     *
     * @param rewardDTO 参数
     */
    void reward(RewardDTO rewardDTO);
}
